﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Entidades.Sistema.Venta;

namespace Mapping.Sistema.Venta
{
    public static class MappingContacto
    {
        public static List<Contacto> ConsultarContactos()
        {
            try
            {
                SqlCommand cmdContactoes = new SqlCommand();
                cmdContactoes.CommandText = "sp_ConsultarContacto";
                cmdContactoes.CommandType = System.Data.CommandType.StoredProcedure;
                Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
                cmdContactoes.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
                SqlDataReader drContactoes = cmdContactoes.ExecuteReader();

                List<Contacto> Contactos = new List<Contacto>();

                while (drContactoes.Read())
                {
                    Contacto oContacto = new Contacto();
                    oContacto.IdContacto = Convert.ToInt32(drContactoes["Id_Contacto"]);
                    oContacto.Nombre = drContactoes["Nombre"].ToString();
                    oContacto.Apellido = drContactoes["Apellido"].ToString();
                    oContacto.Email = drContactoes["Email"].ToString();
                    oContacto.Telefono = drContactoes["Telefono"].ToString();
                    oContacto.Celular = drContactoes["Celular"].ToString();
                    oContacto.Cliente.IdCliente = Convert.ToInt32(drContactoes["IdCliente"]);

                    Contactos.Add(oContacto);
                }

                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
                return Contactos;
            }
            catch (Exception ex)
            {
                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
                throw (ex);
            }
        }
        public static bool AgregarContacto(Contacto oContacto)
        {
            SqlCommand cmdContacto = new SqlCommand();
            cmdContacto.CommandText = "sp_AgregarContacto";
            cmdContacto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdContacto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdContacto.Parameters.Add("@Id_Contacto", System.Data.SqlDbType.Int).Value = oContacto.IdContacto;
            cmdContacto.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Nombre;
            cmdContacto.Parameters.Add("@Apellido", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Apellido;
            cmdContacto.Parameters.Add("@Email", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Email;
            cmdContacto.Parameters.Add("@Telefono", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Telefono;
            cmdContacto.Parameters.Add("@Celular", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Celular;
            cmdContacto.Parameters.Add("@Id_Cliente", System.Data.SqlDbType.Int).Value = oContacto.Cliente.IdCliente;
            cmdContacto.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }

        public static int ModificarContacto(Contacto oContacto)
        {
            SqlCommand cmdContacto = new SqlCommand();
            cmdContacto.CommandText = "sp_ModificarContacto";
            cmdContacto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdContacto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdContacto.Parameters.Add("@Id_Contacto", System.Data.SqlDbType.Int).Value = oContacto.IdContacto;
            cmdContacto.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Nombre;
            cmdContacto.Parameters.Add("@Apellido", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Apellido;
            cmdContacto.Parameters.Add("@Email", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Email;
            cmdContacto.Parameters.Add("@Telefono", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Telefono;
            cmdContacto.Parameters.Add("@Celular", System.Data.SqlDbType.VarChar, 50).Value = oContacto.Celular;
            cmdContacto.Parameters.Add("@Id_Cliente", System.Data.SqlDbType.Int).Value = oContacto.Cliente.IdCliente;
            int nro = Convert.ToInt32(cmdContacto.ExecuteScalar());
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return nro;
        }

        public static bool EliminarContacto(Contacto oContacto)
        {
            SqlCommand cmdEliminarContacto = new SqlCommand();
            cmdEliminarContacto.CommandText = "sp_EliminarContacto";
            cmdEliminarContacto.CommandType = System.Data.CommandType.StoredProcedure;
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdEliminarContacto.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdEliminarContacto.Parameters.Add("@Id_Contacto", System.Data.SqlDbType.Int).Value = oContacto.IdContacto;
            cmdEliminarContacto.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }
    }
}
